<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    //下面两个函数的返回值
    function foo1(){
        return {
            bar:'hello'
        }

    }
    function foo2(){
        return 
        {
            bar:'hello'
        }
    } 
    console.log("foo1 returns:")
    console.log(foo1());   //{bar: "hello"}
    console.log("foo2 returns:")
    console.log(foo2());   //undefined
//     这不仅令人惊讶，而且特别令人烦恼的是，foo2()返回未定义而没有引发任何错误。

// 原因与JavaScript中分号在技术上是可选的事实有关(尽管忽略它们通常是非常糟糕的形式)。因此，在foo2()中遇到包含return语句的行(没有其他内容)时，会在return语句之后立即自动插入分号。

// 由于代码的其余部分是完全有效的，即使它没有被调用或做任何事情(它只是一个未使用的代码块，它定义了一一个属性栏，它等于字符串"hello" ),所以不会抛出任何错误。

// 这种行为也被认为是遵循了在JavaScript中将一行开头大括号放在行尾的约定，而不是在新行的开头。如此处所示，这不仅仅是JavaScript中的一种风格偏好。

    </script>
</body>
</html>